"""1：列表list[] 2：元组tup1() 3：字典{key:value} 4：集合{el}"""
import operator
"""
    1:列表
    创建一个列表，只要把逗号分隔的不同的数据项使用方括号 [ ] 括起来即可。如下所示：(也可以做切片，语法和字符串相同)
    list1 = ['Google', 'Runoob', 1997, 2000]
    list2 = [1, 2, 3, 4, 5 ]
    list3 = ["a", "b", "c", "d"]
    list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
"""
list1 = ['red', 'green', 'blue', 'yellow', 'white', 'black']
print(list1[0]) # >>> red
print(list1[1]) # >>> green
print(type(list1[0:3]),list1[0:3])  # >>> <class 'list'> ['red', 'green', 'blue']
for i in list1: print(i)
print("-------------------------")
for i,j in enumerate(list1): print(i,j)
print(id(list1)) #2091907656512
list1.append("orange")
print(id(list1)) #2091907656512 数组拼接地址不变
print("blue" in list1) # >>> true
print(list1*2) # >>>  ['red', 'green', 'blue', 'yellow', 'white', 'black', 'red', 'green', 'blue', 'yellow', 'white', 'black']

#list的常用方法
print(len(list1)) #6
print(max(list1)) # >>> yellow
print(min(list1)) # >>> black
print(list1.append("orange"), list1) # >>> None ['red', 'green', 'blue', 'yellow', 'white', 'black', 'orange', 'orange']
print(list1.extend(["o1", "o2", "o3"]), list1) # >>> None ['red', 'green', 'blue', 'yellow', 'white', 'black', 'orange', 'orange', 'o1', 'o2', '03']
print(list1.index("green"))  # >>> 1
print(list1.insert(1,  "orange1", ), list1) #None ['red', 'orange1', 'green', 'blue', 'yellow', 'white', 'black', 'orange', 'orange', 'o1', 'o2', '03']
print(list1.pop())   #pop一次只能删除一个元素  >>> o3
print(list1.pop(-1)) # >>> o2
print(list1.pop(-1)) # >>> o1
print(list1.remove("orange1")) # >>> None  # alueError: list.remove(x): x not in list
print(list1.reverse(), list1) # >>> None ['orange', 'orange', 'black', 'white', 'yellow', 'blue', 'green', 'red']
print(id(list1) == id(list1.copy())) # >>> False
print(operator.eq(list1, list1.copy())) # >>> True
print(list1.clear(), list1) # >>> None []


"""
    1:元组
    Python 的元组与列表类似，不同之处在于元组的元素不能修改。
    元组使用小括号 ( )，列表使用方括号 [ ]。
    元组创建很简单，只需要在括号中添加元素，并使用逗号隔开即可。
"""
tup1 = ('red', 'green', 'blue', 'yellow', 'white', 'black')
tup2 = ('red', )
print(tup1[0]) # >>> red
print(tup1[1]) # >>> green
print(type(tup1[0:3]),tup1[0:3])  # >>> <class 'list'> ['red', 'green', 'blue']

#tuple的常用方法
print(len(tup1)) #6
print(max(tup1)) # >>> yellow
print(min(tup1)) # >>> black

"""
    1:字典
    字典是另一种可变容器模型，且可存储任意类型对象。（键必须是唯一的）
    字典的每个键值 key=>value 对用冒号 : 分割，每个对之间用逗号(,)分割，整个字典包括在花括号 {} 中 ,格式如下所示： 
    d = {key1 : value1, key2 : value2, key3 : value3 }
"""
# 使用大括号 {} 来创建空字典
emptyDict = {}  #使用内建函数创建字典：emptyDict = dict()
# 打印字典
print(emptyDict)
# 查看字典的数量
print("Length:", len(emptyDict))
# 查看类型
print(type(emptyDict))
emptyDict["A"] = 1
emptyDict["B"] = 2
print(emptyDict)
print(emptyDict["A"])

#内置方法
print(len(emptyDict)) # >>> 2
print(str(emptyDict)) # >>> {'A': 1, 'B': 2}
print(type(emptyDict)) # >>> <class 'dict'>
print(operator.eq(emptyDict, emptyDict.copy())) # >>> {'A': 1, 'B': 2} True
print(type(emptyDict.keys()),emptyDict.keys()) #>>> <class 'dict_keys'> dict_keys(['A', 'B'])
print(type(list(emptyDict.keys())), list(emptyDict.keys()))  #>>> <class 'list'> ['A', 'B']
print(type(emptyDict.values()), emptyDict.values()) #>>> <class 'dict_values'> dict_values([1, 2])
#print(emptyDict["C"]) #>> KeyError: 'C'
print(emptyDict.get("C", ""))
print("A" in emptyDict) # >>> true
print(type(emptyDict.items()), emptyDict.items()) # >>> <class 'dict_items'> dict_items([('A', 1), ('B', 2)])
print(emptyDict.update({"C": 3}) ,emptyDict) # >>> None {'A': 1, 'B': 2, 'C': 3}
print(emptyDict.pop("C")) # >>> 3
print(emptyDict.popitem(), emptyDict)   # >>> ('B', 2) {'A': 1}


"""
    1:集合set
    集合（set）是一个无序的不重复元素序列。
    集合中的元素不会重复，并且可以进行交集、并集、差集等常见的集合操作。
    可以使用大括号 { } 创建集合，元素之间用逗号 , 分隔， 或者也可以使用 set() 函数创建集合。
    set无法遍历 需要转换成list
"""
set1 = {'red', 'green', 'blue', 'yellow', 'white', 'black'} #等同于set1 = set(['red', 'green', 'blue', 'yellow', 'white', 'black'])
print(type(list(set1)), list(set1)) #<class 'list'> ['green', 'blue', 'black', 'red', 'white', 'yellow']

#内置方法
print(len(set1))
print(set1.add("orange"), set1) # >>> None {'orange', 'blue', 'black', 'white', 'red', 'yellow', 'green'}
#print(set1.pop(), set1)  # >>> orange {'blue', 'black', 'white', 'red', 'yellow', 'green'}
print(set1.remove("orange")) # >>> None {'white', 'red', 'green', 'orange', 'blue', 'yellow', 'black'}
print(set1.update({"orange"}), set1) # >>> None {'red', 'orange', 'blue', 'yellow', 'green', 'white', 'black'}
print(set1.update({"orange": "1"}), set1) # >>> None {'red', 'orange', 'blue', 'yellow', 'green', 'white', 'black'}
print(set1.update(["orange"]), set1) # >>> None {'red', 'orange', 'blue', 'yellow', 'green', 'white', 'black'}
print(set1.update(["orange","orange"]), set1) # >>> None {'red', 'orange', 'blue', 'yellow', 'green', 'white', 'black'}
print(set1.discard("green"), set1) # >>> None {'red', 'yellow', 'white', 'blue', 'black', 'orange'}
print(set1.clear(), set1) # >>> None set()


table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
print('Runoob: {0[Runoob]}; Google: {0[Google]}; Taobao: {0[Taobao]}'.format(table))            # >>> Runoob: 2; Google: 1; Taobao: 3
print('Runoob: {0[Runoob]:3d}; Google: {0[Google]:3d}; Taobao: {0[Taobao]:3d}'.format(table))   # >>> Runoob:   2; Google:   1; Taobao:   3
print('Runoob: {0[Runoob]:d}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table))      # >>> Runoob: 2; Google: 1; Taobao: 3
